package com.atguigu.juc;

import java.util.concurrent.CountDownLatch;

/**
 * @author ：MJS
 * @date ：Created in 2021/4/26  18:48
 * @description：多个线程协同干活，要求到最后一个线程为0后，才能启动主线程
 * 做一个，减少一个。清零后才能启动主线程，逐个做减法。
 */
public class CountDownLatchDemo {
    public static void main(String[] args) throws InterruptedException {
        //7个同学  在一个教室上自习，要求班长锁门。
        //必须最后一个同学离开教室以后，班长才能关门走人

        CountDownLatch countDownLatch=new CountDownLatch(6);
        for (int i = 1; i <= 6; i++) {
            new Thread(() -> {
                try {
                    System.out.println(Thread.currentThread().getName()+"\t"+"离开教室");
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    //离开一次，相当于减少1
                    countDownLatch.countDown();
                }
            }, String.valueOf(i)).start();
        }
        //当数量为零时，线程才能被唤醒，否则一直等待
        countDownLatch.await();
        System.out.println(Thread.currentThread().getName()+"\t"+"班长关门");

    }
}
